//package com.xls.commonlibrary.ad.gm;
//
//import android.app.Activity;
//import android.text.TextUtils;
//import android.util.Log;
//import android.webkit.ValueCallback;
//
//import com.bytedance.msdk.api.AdError;
//import com.bytedance.msdk.api.reward.RewardItem;
//import com.bytedance.msdk.api.v2.GMAdConstant;
//import com.bytedance.msdk.api.v2.GMMediationAdSdk;
//import com.bytedance.msdk.api.v2.GMSettingConfigCallback;
//import com.bytedance.msdk.api.v2.ad.reward.GMRewardAd;
//import com.bytedance.msdk.api.v2.ad.reward.GMRewardedAdListener;
//import com.bytedance.msdk.api.v2.ad.reward.GMRewardedAdLoadCallback;
//import com.bytedance.msdk.api.v2.slot.GMAdSlotRewardVideo;
//import com.hjq.permissions.OnPermissionCallback;
//import com.hjq.permissions.Permission;
//import com.hjq.permissions.XXPermissions;
//import com.hjq.toast.Toaster;
//import com.xls.commonlibrary.ad.reward.bean.AdBean;
//import com.xls.commonlibrary.constant.Const;
//import com.xls.commonlibrary.util.MMKVUtil;
//
//import java.util.List;
//
//import io.reactivex.rxjava3.annotations.NonNull;
//
//// 工具类：处理广告加载等，不然页面中全是广告代码
//public class GromoreUtilOLDNotUseAnyMore {
//    private final String TAG = "GromoreUtil";
//    private static volatile GromoreUtilOLDNotUseAnyMore singleton = null;
//
//    private Activity activity;
//    ValueCallback<String> callback;// ecpm 专用回调
//    ValueCallback<AdBean> callbackShow;// 播放 专用回调   将AdBean回调到UI层
//
//    private GromoreUtilOLDNotUseAnyMore(Activity act) {
//        this.activity = act;
//    }
//
//    public static GromoreUtilOLDNotUseAnyMore getInstance(Activity activity) {
//        if (singleton == null) {
//            synchronized (GromoreUtilOLDNotUseAnyMore.class) {
//                if (singleton == null) {
//                    singleton = new GromoreUtilOLDNotUseAnyMore(activity);
//                }
//            }
//        }
//        return singleton;
//    }
//
//    public void finish() {
//        destroy();
//        singleton = null;
//    }
//
//
//    //  穿山甲相关
//
//    private GMRewardAd mRewardAd;
//    private boolean mLoadSuccess; //是否加载成功
//    private boolean mIsLoadedAndShow = true;//广告加载成功并展示
//    private GMRewardedAdLoadCallback mGMRewardedAdLoadCallback;
//    private GMRewardedAdListener mGMRewardedAdListener;
//
//    private void toast(String msg) {
////        // Toaster.show(msg);
//        Toaster.debugShow(msg);
//    }
//
//
//
//    public void showGMAd() {
//        loadRewardAdWithCallback();
//    }
//
//    // Gromore必须显示了广告才有ecpm
//    public void showGMAd(ValueCallback<String> callback) {// 目的：获取ecpm
//        this.callback = callback;
//        loadRewardAdWithCallback();
//    }
//
//    public void showAd(ValueCallback<AdBean> callback) {// 目的: 播放广告
//        this.callbackShow = callback;
//        loadRewardAdWithCallback();
//    }
//
//    public void callbackShowSuccess() {// 播放成功回调
//        if (callbackShow == null) return;
//        // build AdBean for callback
//        AdBean bean = new AdBean();
//        bean.setShowSuccess(true);
//        bean.setEcpm(mRewardAd.getShowEcpm().getPreEcpm());
//        bean.setAdn(Const.TYPE_GROMORE_CSJ);
//        bean.setAdType("激励视频");
//        callbackShow.onReceiveValue(bean);
//    }
//
//    public void callbackShowFail() {// 播放失败回调
//        if (callbackShow == null) return;
//        // build AdBean for callback
//        AdBean bean = new AdBean();
//        bean.setShowSuccess(false);
//        callbackShow.onReceiveValue(bean);
//    }
//
//    /**
//     * 加载激励广告。如果当前已经加载配置成功，直接请求广告，否则注册监听器请求广告。
//     */
//    private void loadRewardAdWithCallback() {
//
//        initListener();
//        // Toaster.show("loadRewardAdWithCallback");
//
//        if (GMMediationAdSdk.configLoadSuccess()) {
//            loadRewardAd();
//        } else {
//            GMMediationAdSdk.registerConfigCallback(new GMSettingConfigCallback() {
//                @Override
//                public void configLoad() {
//                    loadRewardAd();
//                }
//            });
//        }
//    }
//
//    private void loadRewardAd() {
//
//        String adId = MMKVUtil.getInstance().getKV().decodeString(Const.KEY_AD_ID_GROMORE_CSJ);
//        String userId = MMKVUtil.getInstance().getKV().decodeString(Const.KEY_USER_ID_GROMORE_CSJ);
//
//        // 测试数据
//        if (TextUtils.isEmpty(adId)) {
//            //adId = "102070107";
//
//            adId = "102410042";
//        }
//        if (TextUtils.isEmpty(userId)) {
//            //userId = "131258";
//
//
//            userId = "157744";
//        }
//
//        if (TextUtils.isEmpty(adId)) {
//            // Toaster.show("广告id不合法");
//            return;
//        }
//        if (TextUtils.isEmpty(userId)) {
//            // Toaster.show("userId不合法");
//            return;
//        }
//
//        // 注意：每次加载广告，都需要新new一个GMBannerAd对象进行加载
////        mRewardAd = new GMRewardAd(activity, "102070107");//demo 广告位id
//
////         mRewardAd = new GMRewardAd(activity, "102410231");// 真实 广告位id
//        mRewardAd = new GMRewardAd(activity, adId);// 真实 广告位id
//
//        // 激励视频服务端验证功能，请求时可传入customData数据透传给各家ADN，详情参考RewardUtils类。
//
//        // 创建Reward广告请求类型参数GMAdSlotReward，更多参数参考文档
//        GMAdSlotRewardVideo adSlotRewardVideo = new GMAdSlotRewardVideo.Builder()
//                //.setUserID("user123")//用户id,必传参数
////                .setUserID("131258")// 正式 用户id,必传参数  需要mmkv保存
//                .setUserID(userId)// 正式 用户id,必传参数  需要mmkv保存
//                .setOrientation(GMAdConstant.VERTICAL)//必填参数，期望视频的播放方向：GMAdConstant.HORIZONTAL 或 GMAdConstant.VERTICAL
//                .build();
//
//        mRewardAd.loadAd(adSlotRewardVideo, mGMRewardedAdLoadCallback);
//    }
//
//    void getEcpm() {
//        activity.runOnUiThread(new Runnable() {
//            @Override
//            public void run() {
//                // todo get ecpm toast and save to db
//                if (mRewardAd == null) return;
//                if (mRewardAd.getShowEcpm() == null) return;
//
//                String msg =
//                        "ecpm=" + mRewardAd.getShowEcpm().getPreEcpm();
//
//
////                                +  mRewardAd.getShowEcpm().getPreEcpm();// null
//
//                Log.d(TAG, "ecpm show info=" + mRewardAd.getShowEcpm());
//                Log.d(TAG, "ecpm best info=" + mRewardAd.getBestEcpm());
////                TToast.show(CalculatorCSJBidActivity.activity, msg);
////                Toast.makeText(activity, msg, Toast.LENGTH_LONG).show();
//                // Toaster.show(msg);
////
//                if (callback != null) callback.onReceiveValue(mRewardAd.getShowEcpm().getPreEcpm());
//
//                callbackShowSuccess();
//
////                // todo save to db
////                CSJDBUtil.putReward(
////                        mRewardAd.getShowEcpm().getPreEcpm(),
////                        mRewardAd.getShowEcpm().getAdnName(),
////                        mRewardAd.getShowEcpm().getAdNetworkRitId(),
////                        mRewardAd.getShowEcpm().getReqBiddingType() + ""
////                );
//            }
//        });
//    }
//
//    /**
//     * 展示广告
//     */
//    private void showRewardAd() {
//        if (mLoadSuccess && mRewardAd != null) {
//            if (mRewardAd.isReady()) {
//                //在获取到广告后展示,强烈建议在onRewardVideoCached回调后，展示广告，提升播放体验
//                //展示广告，并传入广告展示的场景
//                mRewardAd.setRewardAdListener(mGMRewardedAdListener);
//
//                // 激励视频再看一个功能。参数跟普通监听器的是一样的。
//                mRewardAd.setRewardPlayAgainListener(GMRewardUtils.getRewardPlayAgainListener());
//
//                mRewardAd.showRewardAd(activity);// 这个代码之后不能添代码  x就崩溃
//                mLoadSuccess = false;
//            } else {
//                // Toaster.show("当前广告不满足show的条件");
//
//            }
//        } else {
//            // Toaster.show("请先加载广告");
//        }
//    }
//
//    private void destroy() {
//        if (mRewardAd != null) {
//            mRewardAd.destroy();
//        }
//    }
//
//    private void initListener() {
////        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
////            @Override
////            public void onCheckedChanged(RadioGroup group, int checkedId) {
////                if (checkedId == R.id.radio_horizontal) {
////                    orientation = GMAdConstant.HORIZONTAL;
////                    mAdUnitId = getResources().getString(R.string.reward_horizontal_unit_id);
////                    mTvAdUnitId.setText(String.format(getResources().getString(R.string.ad_unit_id), mAdUnitId));
////                } else if (checkedId == R.id.radio_vertical) {
////                    orientation = GMAdConstant.VERTICAL;
////                    mAdUnitId = getResources().getString(R.string.reward_vertical_unit_id);
////                    mTvAdUnitId.setText(String.format(getResources().getString(R.string.ad_unit_id), mAdUnitId));
////                } else if (checkedId == R.id.radio_bidding) {
////                    orientation = GMAdConstant.HORIZONTAL;
////                    mAdUnitId = getResources().getString(R.string.reward_bidding_unit_id);
////                    mTvAdUnitId.setText(String.format(getResources().getString(R.string.ad_unit_id), mAdUnitId));
////                }
////            }
////        });
////        mBtLoadReward.setOnClickListener(activity);
////        mBtShowReward.setOnClickListener(activity);
////        mBtLoadShowReward.setOnClickListener(activity);
//        mGMRewardedAdLoadCallback = new GMRewardedAdLoadCallback() {
//            @Override
//            public void onRewardVideoLoadFail(AdError adError) {
//
//                callbackShowFail();
//
//                mLoadSuccess = false;
//                Log.e(TAG, "load RewardVideo ad error : " + adError.code + ", " + adError.message);
//            }
//
//            @Override
//            public void onRewardVideoAdLoad() {
//                mLoadSuccess = true;
//                Log.e(TAG, "load RewardVideo ad success !");
//            }
//
//            @Override
//            public void onRewardVideoCached() {
//                mLoadSuccess = true;
//                Log.d(TAG, "onRewardVideoCached....缓存成功");
////                TToast.show(CalculatorCSJBidActivity.activity, "激励视频素材缓存成功！");
//                if (mIsLoadedAndShow) { //加载并展示
//                    showRewardAd();
//                }
//            }
//        };
//        mGMRewardedAdListener = new GMRewardedAdListener() {
//            /**
//             * 广告的展示回调 每个广告仅回调一次
//             */
//            public void onRewardedAdShow() {
//                // Toaster.show("激励onRewardedAdShow！");
//                Log.d(TAG, "onRewardedAdShow");
//            }
//
//            /**
//             * show失败回调。如果show时发现无可用广告（比如广告过期或者isReady=false），会触发该回调。
//             * 开发者应该结合自己的广告加载、展示流程，在该回调里进行重新加载。
//             * @param adError showFail的具体原因
//             */
//            @Override
//            public void onRewardedAdShowFail(AdError adError) {
//
//                callbackShowFail();
//
//                if (adError == null) {
//                    return;
//                }
//                // Toaster.show("激励onRewardedAdShowFail！ errCode: " + adError.code + ", errMsg: " + adError.message);
//                Log.d(TAG, "onRewardedAdShowFail, errCode: " + adError.code + ", errMsg: " + adError.message);
//                // 开发者应该结合自己的广告加载、展示流程，在该回调里进行重新加载
//            }
//
//            /**
//             * 注意Admob的激励视频不会回调该方法
//             */
//            @Override
//            public void onRewardClick() {
//                Log.d(TAG, "onRewardClick");
//                // Toaster.show("激励onRewardClick！");
//            }
//
//            /**
//             * 广告关闭的回调
//             */
//            public void onRewardedAdClosed() {
//                Log.d(TAG, "onRewardedAdClosed");
//                // Toaster.show("激励onRewardedAdClosed！");
//
////                if (callback != null) mCallback.callback();
//
//                getEcpm();
//            }
//
//            /**
//             * 视频播放完毕的回调 Admob广告不存在该回调
//             */
//            public void onVideoComplete() {
//                Log.d(TAG, "onVideoComplete");
//                // Toaster.show("激励onVideoComplete！");
//            }
//
//            /**
//             * 视频播放失败的回调
//             */
//            public void onVideoError() {
//                Log.d(TAG, "onVideoError");
//                // Toaster.show("激励onVideoError！");
//
//
//            }
//
//            /**
//             * 激励视频播放完毕，验证是否有效发放奖励的回调
//             */
//            public void onRewardVerify(RewardItem rewardItem) {
//                Log.d(TAG, "onRewardVerify");
//                // Toaster.show("onRewardVerify！");
//                // 这里是未开启gromore服务端奖励验证的逻辑，如果开启了Gromore服务端奖励验证，请参考GMRewardUtils.processRewardVerify()。
//                if (rewardItem != null) {
//                    // 根据isRewardVerify来判断是否进行奖励发放
//                    boolean isRewardVerify = rewardItem.rewardVerify();
//                    Log.d(TAG, "onRewardVerify rewardItem isRewardVerify: " + isRewardVerify);
//                }
//            }
//
//            /**
//             * Mintegral GDT Admob广告不存在该回调
//             */
//            @Override
//            public void onSkippedVideo() {
//                Log.d(TAG, "onSkippedVideo");
//                // Toaster.show("激励onSkippedVideo");
//            }
//        };
//    }
//
//
//    //  穿山甲相关
//
//}
